iT邦幫忙

2022 iThome 鐵人賽

DAY 19
0

在 DAY17 的時候已經介紹過如何把 row data 呈現在頁面了,但有時候會遇到一種情況就是欄位太多不可能一次全部顯示在 List 上,也有遇過客戶認為某些資料是屬於敏感資料不要將其放在 List 避免被閒雜人等截圖洩露隱私,這次就來介紹 Detail 的功能,該功能可以將某一 row data 用另外的視窗單獨顯示,但一樣不能編輯,下面就開始實作。

跟 List 一樣會需要編輯 route、Controller,首先在 route 的部分加上
$router->get('/{id}', 'ProductController@detail');

Controller 的部分則是新增 detail Method

public function detail($id, Content $content)
{
    return $content->title($this->title())
        ->description($this->description()['show'] ?? trans('admin.show'))
        ->body($this->show($id));
}

引入 Show class
use Dcat\Admin\Show;

增加 description 屬性內容

protected $description = [
    'index'  => '列表',
    'detail' => '詳細',
];

寫 show Method

protected function show($id)
{
    return Show::make($id, new ProductRepository(), function (Show $show) {
        $show->name('商品名稱');
        $show->type('類型')->using(Product::typeTranslate);;
        $show->outline('大綱');
    });
}

show 跟 grid 的用法會有些許的不同, gird 會使用 column 來設定要顯示的欄位及欄位名稱,show則是直接使用 column name來設定,顯示的修改用 using 或是 display 都可以,差別是 display 可以加入更多的判斷條件。

如此一來就可以點選每個 row 後面的眼睛就可以看到該 row 的詳細資訊了,明天將 update 與 delete 作完就可以結束基礎 CRUD 了,明天見。


上一篇
DAY18 - 驚魂記
下一篇
DAY20 - 這是一個先有雞還是先有蛋的問題
系列文
持續進化論30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言